import Vue from "vue";
import VueRouter from "vue-router";
import routes from "./routes";

//把路由作为插件进行使用
Vue.use(VueRouter);

//重写VueRouter原型对象上的push方法
const oldPush = VueRouter.prototype.push;
VueRouter.prototype.push = function (
  location,
  onComplate = () => {},
  onAbort = () => {}
) {
  oldPush.call(this, location, onComplate, onAbort);
};

//重写VueRouter原型对象上的replace方法
const oldReplace = VueRouter.prototype.replace;
VueRouter.prototype.replace = function (
  location,
  onComplate = () => {},
  onAbort = () => {}
) {
  oldReplace.call(this, location, onComplate, onAbort);
};

//实例化一个路由器对象
const router = new VueRouter({
  mode: "history", //默认不配置是hash默认,配置后是history模式
  routes,
});

//配置全局前置守卫
/* 
  导航守卫函数接受三个参数
    1. to:代表目标路由的$route对象
    2. from:代表出发路由的$route对象
    3. next是一个函数,代表是否放行或重新导航
      next可以不传递任何参数,表示直接放行
      next可以接受一个路径作为参数,表示重定向

*/
router.beforeEach((to, from, next) => {
  console.log(to, from, next);
  // next();//直接放行
  // next("/play"); //重新导航
});

export default router;
